package com.eastfair.builder.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.builder.entity.ConstructionPersonnel;

import java.util.List;

import com.eastfair.builder.vo.*;
import com.eastfair.builder.dto.*;
import com.eastfair.core.base.R;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 业务接口
 * 施工人员信息
 * </p>
 *
 * @author linan
 * @date 2023-05-04
 */
public interface ConstructionPersonnelService extends SuperService<ConstructionPersonnel> {
    /**
     * do转vo
     *
     * @param model
     */
    ConstructionPersonnelVO doToVo(ConstructionPersonnel model);

    /**
     * do转vo
     *
     * @param modelList
     */
    List<ConstructionPersonnelVO> doToVos(List<ConstructionPersonnel> modelList);


    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<ConstructionPersonnel> list(ConstructionPersonnelDTO modelDTO, List<Long> ids);

    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<ConstructionPersonnel> listOfCache(ConstructionPersonnelDTO modelDTO, List<Long> ids);

    /**
     * 添加人员
     *
     * @param constructionPersonnelDTO - constructionPersonnelDTO
     * @return Boolean
     */
    Boolean addConstructionPersonnel(ConstructionPersonnelDTO constructionPersonnelDTO);

    /**
     * 人员列表
     * @param constructionPersonnelDTO constructionPersonnelDTO
     * @return List<ConstructionPersonnelVO>
     */
    List<ConstructionPersonnelVO> queryConstructionPersonnel(ConstructionPersonnelDTO constructionPersonnelDTO);

    /**
     * 报馆ID查询施工人员
     *
     * @param reportSpaceId the report space id
     * @return the list
     */
    List<ConstructionPersonnel> listByReportSpaceId(Long reportSpaceId);


    /**
     * 导入人员信息
     * @param file file
     * @param reportSpaceId reportSpaceId
     * @return Boolean
     * @throws Exception
     */
    Boolean importConstructionPersonnel(MultipartFile file, Long reportSpaceId) throws Exception;

    /**
     * 通过展位查人员列表
     * @param constructionPersonnelDTO constructionPersonnelDTO
     * @return List<ConstructionPersonnelVO>
     */
    List<ConstructionPersonnelVO> queryConstructionPersonnelBySiteName(ConstructionPersonnelDTO constructionPersonnelDTO);

    List<ConstructionPersonnelVO> queryConstructionPersonnelByExhibition(ConstructionPersonnelDTO constructionPersonnelDTO);

    /**
     * 查询人员信息是否在施工人员维护表中
     * @param constructionPersonnelDTO
     * @return
     */
    Boolean checkConstructionPersonnel(ConstructionPersonnelDTO constructionPersonnelDTO);

    /**
     * 报馆ID删除施工人员
     *
     * @param reportSpaceId the report space id
     * @return the boolean
     */
    boolean removeByReportSpaceId(Long reportSpaceId);
}
